import type { PluginOption } from 'vite'

import { Transformer } from './transformer'

/**
 * vite-plugin-function-string
 * 一个Vite插件，用于在编译时将函数的toString()调用转换为字符串字面量，
 * 避免在运行时执行toString操作
 *
//  * @param options 插件配置选项
 * @returns Vite插件
 */
function functionString(): PluginOption {
  const transformer = new Transformer()

  return {
    name: 'vite-plugin-fn-string:replace-code',
    enforce: 'post',

    transform(code, id) {
      return transformer.replaceCode(this, code, id)
    },
  }
}

// 导出默认函数
export default functionString
